I'm thinking that your package class could do with having the "where to send" and "where from" split out into a separate "address" class. You would then have two instances of that, sender and recipient in the package class, rather than repeating a bunch of member variables with sender and recipient prefixes. A further consequence of this would be that you could write a funciton to display an address, making your overall code a lot simpler.

You may even find that you can deal with address data completely independently from the package class, and just pass in a sender and receiver address into the constructor, taking the number of arguments to the constructor down to something manageable.

--
Mats